package com.lagou.edu.spring.core;

import java.util.List;

/**
 * bean工厂，获取对象
 *
 * @author 大犬
 * @date 2020/3/31
 */
public interface BeanFactory {
    /**
     * 获取bean
     *
     * @param beanName bean名称
     * @param beanType bean类型
     * @param <T>
     * @return 返回bean实例对象
     */
    <T> T getBean(String beanName, Class<T> beanType);

    /**
     * 根据bean的类型获取bean
     *
     * @param beanType bean类型
     * @param <T>
     * @return 返回匹配到的bean
     */
    <T> List<T> getBeans(Class<T> beanType);


    /**
     * 获取bean
     *
     * @param beanName bean名称
     * @return 返回bean
     */
    Object getBean(String beanName);


    /**
     * 获取bean
     *
     * @param beanType bean类型
     * @return 返回bean
     */
    <T> T getBean(Class<T> beanType);

}
